package comandos;

import model.Conversacion;
import model.Usuario;
import protocol.MensajeComando;
import server.ClienteHilo;
import server.Servidor;

public class AgregoConversacion implements ComandoServidor
{
	private MensajeComando estadoOperacion;
	
	public void ejecutar (ClienteHilo cliente)
	{

		try
		{
			//Recibo el combo de usuarios de los cuales se quiere ver
			//los amigos en comun entre ellos.
			Usuario usuarioCreador = (Usuario) cliente.getInput().readObject();	
			
			//Recibo el combo de usuarios de los cuales se quiere ver
			//los amigos en comun entre ellos.
			Conversacion conversacion = (Conversacion) cliente.getInput().readObject();	


			//Escribo Logs..
			StringBuffer linea = new StringBuffer("Conversaciones - Creando conversacion entre [");
			for(Usuario u: conversacion.getUsuarios())
				linea.append("<" + u.getNick() + ">," ); 
			linea.append("]");
			
			//Log..
			System.out.println(linea.toString());			
			
			//Agrego la conversacion al servidor
			Servidor.addConversacion(conversacion);
			
			//Le envio al cliente un mensaje indicando que se va agregar la conversacion
			cliente.getOutput().writeObject(new MensajeComando("agregar_conversacion",0));
			cliente.getOutput().flush();
			
			//Le envio la conversacion
			cliente.getOutput().writeObject(conversacion);
			cliente.getOutput().flush();
			
			//Inicio la conversacion con el usuario destino
			for(Usuario u: conversacion.getUsuarios()){
				if(u.getId() != usuarioCreador.getId())
					Servidor.invitarAChatear(u, usuarioCreador, conversacion);
			}
		}
		catch (Exception e)	{
			e.printStackTrace();
			System.out.println("Problema al ejecutar el comando");
		}		
	}

	public MensajeComando getEstadoOperacion() {
		return estadoOperacion;
	}

	public void setEstadoOperacion(MensajeComando estadoOperacion) {
		this.estadoOperacion = estadoOperacion;
	}
}
